#Boa:Dialog:Transaccion

import wx
import wx.grid
import consultasBD
import utiles
import sincronizar_tabla  
import os

ROJO = (255, 145, 145, 255)
VERDE = (145, 255, 145, 255)
AZUL = (145, 145, 255, 255)
BLANCO = (255, 255, 255, 255)
AMARILLO = (254, 248, 191, 255)
GRIS = ( 220, 220, 220, 255)
NEGRO = ( 0, 0, 0, 255)
VERDENEGRO = ( 47, 79, 79, 255)

def create(parent):
    return Transaccion(parent)

[wxID_TRANSACCION, wxID_TRANSACCIONBUTTON1, wxID_TRANSACCIONBUTTON2, 
 wxID_TRANSACCIONBUTTON3, wxID_TRANSACCIONBUTTON4, wxID_TRANSACCIONBUTTON5, 
 wxID_TRANSACCIONCHECKBOX1, wxID_TRANSACCIONCOMBOBOX1, 
 wxID_TRANSACCIONCOMBOBOX2, wxID_TRANSACCIONCOMBOBOX3, wxID_TRANSACCIONGRID1, 
 wxID_TRANSACCIONIDORIGEN, wxID_TRANSACCIONINPTC, wxID_TRANSACCIONSTATICTEXT1, 
 wxID_TRANSACCIONSTATICTEXT10, wxID_TRANSACCIONSTATICTEXT11, 
 wxID_TRANSACCIONSTATICTEXT12, wxID_TRANSACCIONSTATICTEXT13, 
 wxID_TRANSACCIONSTATICTEXT14, wxID_TRANSACCIONSTATICTEXT2, 
 wxID_TRANSACCIONSTATICTEXT3, wxID_TRANSACCIONSTATICTEXT4, 
 wxID_TRANSACCIONSTATICTEXT5, wxID_TRANSACCIONSTATICTEXT6, 
 wxID_TRANSACCIONSTATICTEXT7, wxID_TRANSACCIONSTATICTEXT8, 
 wxID_TRANSACCIONSTATICTEXT9, wxID_TRANSACCIONTEXTCTRL1, 
 wxID_TRANSACCIONTEXTCTRL2, wxID_TRANSACCIONTEXTCTRL3, 
 wxID_TRANSACCIONTEXTCTRL4, 
] = [wx.NewId() for _init_ctrls in range(31)]

class Transaccion(wx.Dialog):
    columnas =['Codigo','Descripcion','Talle','Color','Cant.','P. Venta', 'Stock']
    modificables = [0]

    cod_dict = {}
    
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_TRANSACCION, name='', parent=prnt,
              pos=wx.Point(20, 13), size=wx.Size(834, 566),
              style=wx.DEFAULT_DIALOG_STYLE,
              title='Recepcion de Transferencias')
        self.SetClientSize(wx.Size(826, 539))
        self.Show(True)

        self.comboBox1 = wx.ComboBox(choices=[], id=wxID_TRANSACCIONCOMBOBOX1,
              name='comboBox1', parent=self, pos=wx.Point(8, 32),
              size=wx.Size(72, 21), style=0, value='')
        self.comboBox1.SetLabel('')

        self.comboBox2 = wx.ComboBox(choices=[], id=wxID_TRANSACCIONCOMBOBOX2,
              name='comboBox2', parent=self, pos=wx.Point(112, 32),
              size=wx.Size(144, 21), style=0, value='')
        self.comboBox2.SetLabel('')
        self.comboBox2.Bind(wx.EVT_COMBOBOX, self.OnCambiaComboSucu,
              id=wxID_TRANSACCIONCOMBOBOX2)

        self.comboBox3 = wx.ComboBox(choices=[], id=wxID_TRANSACCIONCOMBOBOX3,
              name='comboBox3', parent=self, pos=wx.Point(432, 32),
              size=wx.Size(112, 21), style=0, value='')
        self.comboBox3.SetLabel('')
        self.comboBox3.Show(False)

        self.button1 = wx.Button(id=wxID_TRANSACCIONBUTTON1, label='Buscar',
              name='button1', parent=self, pos=wx.Point(264, 32),
              size=wx.Size(56, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnBuscar,
              id=wxID_TRANSACCIONBUTTON1)

        self.checkBox1 = wx.CheckBox(id=wxID_TRANSACCIONCHECKBOX1,
              label='Mostrar todos', name='checkBox1', parent=self,
              pos=wx.Point(328, 32), size=wx.Size(104, 13), style=0)
        self.checkBox1.SetValue(False)
        self.checkBox1.Show(True)
        self.checkBox1.Bind(wx.EVT_CHECKBOX, self.OnMostrarTodosPendientes,
              id=wxID_TRANSACCIONCHECKBOX1)

        self.textCtrl4 = wx.TextCtrl(id=wxID_TRANSACCIONTEXTCTRL4,
              name='textCtrl4', parent=self, pos=wx.Point(616, 32),
              size=wx.Size(72, 21), style=0, value='')

        self.inptc = wx.TextCtrl(id=wxID_TRANSACCIONINPTC, name='inptc',
              parent=self, pos=wx.Point(744, 32), size=wx.Size(72, 21), style=0,
              value='')
        self.inptc.Bind(wx.EVT_KILL_FOCUS, self.OnKillFocus)

        self.button2 = wx.Button(id=wxID_TRANSACCIONBUTTON2,
              label='Recepcionar', name='button2', parent=self,
              pos=wx.Point(192, 502), size=wx.Size(88, 24), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnRecepcionar,
              id=wxID_TRANSACCIONBUTTON2)

        self.button3 = wx.Button(id=wxID_TRANSACCIONBUTTON3, label='Salir',
              name='button3', parent=self, pos=wx.Point(740, 502),
              size=wx.Size(75, 23), style=0)
        self.button3.Bind(wx.EVT_BUTTON, self.OnBotonSalir,
              id=wxID_TRANSACCIONBUTTON3)

        self.grid1 = wx.grid.Grid(id=wxID_TRANSACCIONGRID1, name='grid1',
              parent=self, pos=wx.Point(8, 64), size=wx.Size(808, 424),
              style=0)
        self.grid1.EnableEditing(False)
        self.grid1.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK,
              self.OnDobleClickIzquierdo)
        self.grid1.Bind(wx.grid.EVT_GRID_CELL_RIGHT_DCLICK,
              self.OnDobleClickDerecho)

        self.staticText1 = wx.StaticText(id=wxID_TRANSACCIONSTATICTEXT1,
              label='Origen', name='staticText1', parent=self, pos=wx.Point(88,
              16), size=wx.Size(32, 13), style=0)

        self.staticText3 = wx.StaticText(id=wxID_TRANSACCIONSTATICTEXT3,
              label='Fecha', name='staticText3', parent=self, pos=wx.Point(704,
              3), size=wx.Size(29, 13), style=0)

        self.staticText4 = wx.StaticText(id=wxID_TRANSACCIONSTATICTEXT4,
              label='Total items', name='staticText4', parent=self,
              pos=wx.Point(8, 491), size=wx.Size(52, 13), style=0)

        self.staticText5 = wx.StaticText(id=wxID_TRANSACCIONSTATICTEXT5,
              label='Nro. de \nTransferencia', name='staticText5', parent=self,
              pos=wx.Point(8, 3), size=wx.Size(66, 26), style=0)

        self.staticText6 = wx.StaticText(id=wxID_TRANSACCIONSTATICTEXT6,
              label='P.T.C.', name='staticText6', parent=self, pos=wx.Point(704,
              32), size=wx.Size(31, 13), style=0)

        self.staticText8 = wx.StaticText(id=wxID_TRANSACCIONSTATICTEXT8,
              label='Enviados', name='staticText8', parent=self,
              pos=wx.Point(88, 491), size=wx.Size(43, 13), style=0)

        self.staticText9 = wx.StaticText(id=wxID_TRANSACCIONSTATICTEXT9,
              label='Recibidos', name='staticText9', parent=self,
              pos=wx.Point(136, 491), size=wx.Size(45, 13), style=0)

        self.idorigen = wx.TextCtrl(id=wxID_TRANSACCIONIDORIGEN,
              name='idorigen', parent=self, pos=wx.Point(88, 32),
              size=wx.Size(24, 21), style=0, value='')
        self.idorigen.SetEditable(False)

        self.textCtrl1 = wx.TextCtrl(id=wxID_TRANSACCIONTEXTCTRL1,
              name='textCtrl1', parent=self, pos=wx.Point(744, 3),
              size=wx.Size(72, 21), style=0, value='')
        self.textCtrl1.SetEditable(False)

        self.textCtrl2 = wx.TextCtrl(id=wxID_TRANSACCIONTEXTCTRL2,
              name='textCtrl2', parent=self, pos=wx.Point(88, 504),
              size=wx.Size(40, 21), style=0, value='')
        self.textCtrl2.SetEditable(False)

        self.textCtrl3 = wx.TextCtrl(id=wxID_TRANSACCIONTEXTCTRL3,
              name='textCtrl3', parent=self, pos=wx.Point(136, 504),
              size=wx.Size(40, 21), style=0, value='')
        self.textCtrl3.SetEditable(False)

        self.staticText2 = wx.StaticText(id=wxID_TRANSACCIONSTATICTEXT2,
              label='enviado por', name='staticText2', parent=self,
              pos=wx.Point(432, 16), size=wx.Size(57, 13), style=0)
        self.staticText2.Show(False)

        self.staticText7 = wx.StaticText(id=wxID_TRANSACCIONSTATICTEXT7,
              label='DOBLE CLICK IZQUIERDA', name='staticText7', parent=self,
              pos=wx.Point(296, 496), size=wx.Size(136, 13), style=0)
        self.staticText7.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD, False,
              'Tahoma'))
        self.staticText7.Show(False)

        self.staticText10 = wx.StaticText(id=wxID_TRANSACCIONSTATICTEXT10,
              label='DOBLE CLICK DERECHA', name='staticText10', parent=self,
              pos=wx.Point(296, 512), size=wx.Size(124, 13), style=0)
        self.staticText10.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD,
              False, 'Tahoma'))
        self.staticText10.Show(True)

        self.staticText11 = wx.StaticText(id=wxID_TRANSACCIONSTATICTEXT11,
              label='- agregar unidad', name='staticText11', parent=self,
              pos=wx.Point(440, 496), size=wx.Size(80, 13), style=0)
        self.staticText11.Show(False)

        self.staticText12 = wx.StaticText(id=wxID_TRANSACCIONSTATICTEXT12,
              label='- quitar unidad', name='staticText12', parent=self,
              pos=wx.Point(440, 512), size=wx.Size(70, 13), style=0)
        self.staticText12.Show(True)

        self.staticText13 = wx.StaticText(id=wxID_TRANSACCIONSTATICTEXT13,
              label='los pendientes', name='staticText13', parent=self,
              pos=wx.Point(346, 46), size=wx.Size(69, 13), style=0)
        self.staticText13.Show(True)

        self.button4 = wx.Button(id=wxID_TRANSACCIONBUTTON4, label='Limpiar',
              name='button4', parent=self, pos=wx.Point(656, 502),
              size=wx.Size(75, 23), style=0)
        self.button4.Bind(wx.EVT_BUTTON, self.OnLimpiar,
              id=wxID_TRANSACCIONBUTTON4)

        self.staticText14 = wx.StaticText(id=wxID_TRANSACCIONSTATICTEXT14,
              label='Codigo', name='staticText14', parent=self,
              pos=wx.Point(616, 16), size=wx.Size(33, 13), style=0)

        self.button5 = wx.Button(id=wxID_TRANSACCIONBUTTON5, label='Imprimir',
              name='button5', parent=self, pos=wx.Point(576, 502),
              size=wx.Size(72, 23), style=0)
        self.button5.Show(False)
        self.button5.Bind(wx.EVT_BUTTON, self.OnImprimir,
              id=wxID_TRANSACCIONBUTTON5)

    def __init__(self, parent):
        self._init_ctrls(parent)
        fecha = utiles.obtenerFecha("d-m-Y")
        self.textCtrl1.SetLabel(fecha)
        self.sucursalDic = {}
        self.seguridad = ""
        self.cargarCombos()
        self.crearGrillas()

    def comboTransferenciasPendientes(self):
        sucursal = utiles.getSucursalActiva()
        r1 = "SELECT idtransferencia FROM transferencia "
        r2 = "WHERE estado='0' AND idsucdestino='"+sucursal+"' "
        r3 = "GROUP BY idtransferencia "
        sql = r1+r2+r3
        resultados = consultasBD.ordenCruda(sql)
        self.comboBox1.Clear()
        for item in resultados:
            self.comboBox1.Append(item[0])
        self.comboBox1.SetEditable(False)

    def cargarCombos(self):
        #combo numero transferencias pendientes
        self.comboTransferenciasPendientes()
        #combo sucursales
        sql = "SELECT codsucursal,nombre FROM sucursales WHERE activa = 0"
        resultados = consultasBD.ordenCruda(sql)
        for sucu in resultados:
            self.comboBox2.Append(sucu[1])
            self.sucursalDic[sucu[1]] = str(sucu[0])
        self.comboBox2.SetEditable(False)
        #combo nombre usuarios
        r1 = "SELECT nombre FROM vendedoras WHERE sucursal<>'0' "
        r2 = "ORDER BY nombre,sucursal"
        sql = r1+r2
        resultado = consultasBD.ordenCruda(sql)
        for item in resultado:
            self.comboBox3.Append(item[0])
        self.comboBox3.SetEditable(False)

    def OnCambiaComboSucu(self, event):
        if self.comboBox2.GetLabel()!="":
            self.idorigen.SetLabel(self.sucursalDic[self.comboBox2.GetLabel()])

    def ajustarAnchoColumnas(self):
        for y in xrange(self.grid1.GetNumberCols()):
            self.grid1.AutoSizeColumn(y,True)

    def crearGrillas(self):
        #fecha,PTC,codsussan,cant,recibido,descripcion,talle,color,precio,proveedor,id,orden
        #0     1   2         3    4        5           6     7     8      9         10 11
        columnas = ['Fecha','P.T.C','Codigo\nSussan','Cant','Recep','Descripcion',\
                    'T.','Color','Precio','Proveedor','id\n(reng)','Orden']
        self.grid1.CreateGrid(1,len(columnas))
        for i, col in enumerate(columnas): 
            self.grid1.SetColLabelValue(i, col)
        self.grid1.SetSelectionMode(wx.grid.Grid.wxGridSelectRows)
        self.grid1.EnableEditing(False)
        self.ajustarAnchoColumnas()
        self.grid1.Refresh()

    def buscarPTCenGrilla(self,codigo):
        for x in xrange(self.grid1.GetNumberRows()):
            if self.checkBox1.GetValue():
                ptc = self.grid1.GetCellValue(x,3)
            else:
                ptc = self.grid1.GetCellValue(x,1)
            if ptc==codigo:
                if self.checkBox1.GetValue():
                    recibido = self.grid1.GetCellValue(x,6)
                else:
                    recibido = self.grid1.GetCellValue(x,4)
                if recibido=="0":return x
        return -1
    
    def OnBotonSalir(self, event):
        self.Close()

    def OnLimpiar(self, event):
        self.limpiar()
        self.seguridad = ""
        self.comboBox1.Enable(True)
        self.comboBox2.Enable(True)
        self.comboBox3.Enable(True)
        self.idorigen.Enable(True)
        self.button1.Enable(True)
        self.checkBox1.Enable(True)
        self.staticText13.Enable(True)
        self.checkBox1.SetValue(False)
        self.comboBox1.SetSelection(-1)
        self.comboBox2.SetSelection(-1)
        self.comboTransferenciasPendientes()
        self.idorigen.SetLabel("")
        self.textCtrl4.SetLabel("")
        self.comboBox3.SetSelection(-1)
        self.comboBox1.SetFocus()

    def limpiar(self):
        self.grid1.ClearGrid()
        for fil in xrange(self.grid1.GetNumberRows()):
            self.grid1.DeleteRows()
        self.grid1.AppendRows()

    def buscarDatosProducto(self,ptc):
##        r1 = "SELECT ptc.talle, c.idcolor, c.nombre, pv.nombre AS proveedor, "
##        r2 = "       p.descri, p.preciolt1 AS precio "
##        r3 = "FROM productos p, colores c, proveedor pv, producto_talle_color ptc "
##        r4 = "WHERE ptc.id='"+ptc+"' AND p.codsussan=ptc.codsussan "
##        r5 = "      AND ptc.color=c.idcolor AND p.proveedor=pv.idproveedor "
##        sql = r1+r2+r3+r4+r5
##        resultado = consultasBD.ordenCrudaDict(sql)
##        if len(resultado)==0 or resultado==() or resultado==None:
##            return {"talle":"","idcolor":"","nombre":"","proveedor":"","descri":"","precio":"0.00"}
##        return resultado[0]
        #buscando PTC producto_talle_color
        r1 = "SELECT talle, color as idcolor, codsussan "
        r2 = "FROM producto_talle_color WHERE id='"+ptc+"' "
        sql = r1+r2
        resultado = consultasBD.ordenCrudaDict(sql)
        diccio1 = {}
        if len(resultado)==0 or resultado==() or resultado==None:
            print "ERROR ---------> Falta datos PTC en tabla producto_talle_color"
            diccio1["talle"] = ""
            diccio1["idcolor"] = ""
            diccio1["descri"] = ""
            diccio1["precio"] = "0.00"
            diccio1["proveedor"] = "" #nombre del proveedor
            diccio1["nombre"] = "" #nombre de color
            diccio1["error"] = -1
            return diccio1
        diccio1["talle"] = resultado[0]["talle"]
        diccio1["idcolor"] = resultado[0]["idcolor"]
        diccio1["error"] = 0
        #se necesita codsussan para las siguientes busquedas
        diccio1["codsussan"] = resultado[0]["codsussan"]
        diccio2 = {}
        for clave in diccio1:
            diccio2[clave] = diccio1[clave]
        #buscando CODSUSSAN productos
        codsussan = diccio1["codsussan"]
        r1 = "SELECT p.descri, p.preciolt1 AS precio, p.proveedor "
        r2 = "FROM productos p WHERE p.codsussan='"+codsussan+"' "
        sql = r1+r2
        resultado = consultasBD.ordenCrudaDict(sql)
        if len(resultado)==0 or resultado==() or resultado==None:
            print "ERROR ---------> Falta datos PRODUCTOS en tabla productos"
            diccio2["descri"] = ""
            diccio2["precio"] = ""
            diccio2["proveedor"] = "" #nombre del proveedor
            diccio2["nombre"] = "" #nombre de color
            diccio2["error"] = -1
            return diccio2
        diccio2["descri"] = resultado[0]["descri"]
        diccio2["precio"] = resultado[0]["precio"]
        diccio2["proveedor"] = resultado[0]["proveedor"]
        diccio2["error"] = 0
        diccio3 = {}
        for clave in diccio2:
            diccio3[clave] = diccio2[clave]
        #buscando NOMBRE PROVEEDOR proveedor
        idproveedor = diccio2["proveedor"]
        sql = "SELECT nombre FROM proveedor WHERE idproveedor='"+idproveedor+"' "
        resultado = consultasBD.ordenCrudaDict(sql)
        if len(resultado)==0 or resultado==() or resultado==None:
            print "ERROR ---------> Falta datos PROVEEDOR en tabla proveedor"
            diccio3["nombre"] = ""
            diccio3["error"] = -2
        else:
            diccio3["proveedor"] = resultado[0]["nombre"]
            diccio3["error"] = 0
        diccio4 = {}
        for clave in diccio3:
            diccio4[clave] = diccio3[clave]
        #buscando NOMBRE COLOR en tabla color
        idcolor = diccio3["idcolor"]
        sql = "SELECT nombre FROM colores WHERE idcolor='"+idcolor+"' "
        resultado = consultasBD.ordenCrudaDict(sql)
        if len(resultado)==0 or resultado==() or resultado==None:
            print "ERROR ---------> Falta datos COLORES en tabla colores"
            diccio4["nombre"] = ""
            diccio4["error"] = -2
        else:
            diccio4["nombre"] = resultado[0]["nombre"]
        return diccio4

    def buscarStock(self,ptc,sucursal):
        r1 = "SELECT stock FROM stock "
        r2 = "WHERE sucursal='"+str(sucursal)+"' AND ptc='"+ptc+"' "
        sql = r1+r2
        resultados = consultasBD.ordenCruda(sql)
        try:
            stock = resultados[0][0]
            existe = True
        except:
            stock = 0
            existe = False
        return existe,stock

    def totalizador(self):
        totTransf = 0
        totRecepc = 0
        for fil in xrange(self.grid1.GetNumberRows()):
            if self.grid1.GetCellValue(fil,0)=="":
                continue
            if self.checkBox1.GetValue():
        #Sucursal,ID,fecha,PTC,CodSussan,Cant,Recibidos,Descr,Talle,Color,Precio,Proveedor,orden
        #0        1  2     3   4         5    6         7     8     9     10     11        12
                transferido = self.grid1.GetCellValue(fil,5)
                recibido = self.grid1.GetCellValue(fil,6)
            else:
        #fecha,PTC,codsussan,cant,recibido,descripcion,talle,color,precio,proveedor,id,orden
        #0     1   2         3    4        5           6     7     8      9         10 11
                transferido = self.grid1.GetCellValue(fil,3)
                recibido = self.grid1.GetCellValue(fil,4)
            transferido = int(transferido)
            recibido = int(recibido)
            totTransf+= transferido
            totRecepc+= recibido
        self.textCtrl2.SetLabel(str(totTransf))
        self.textCtrl3.SetLabel(str(totRecepc))

    def mostrarTodos(self):
        sucursal = utiles.getSucursalActiva()
        r1 = "SELECT * FROM transferencia "
        r2 = "WHERE estado='0' AND idsucdestino='"+sucursal+"' "
        r3 = "ORDER BY fecha,idsucorigen,idtransferencia "
        sql = r1+r2
        resultado = consultasBD.ordenCrudaDict(sql)
        for fil,item in enumerate(resultado):
            #Sucursal,ID,fecha,PTC,CodSussan,Cant,Recibidos,Descr,Talle,Color,Precio,Proveedor,orden
            #0        1  2     3   4         5    6         7     8     9     10     11        12
            sucorigen = str(item["idsucorigen"])
            id = item["idtransferencia"]+" "+str(item["id"])
            fecha = str(item["fecha"])[:10]
            fecha = utiles.invertirFecha2(fecha)
            ptc = item["ptc"]
            codsussan = item["codsussan"]
            try:
                ordenInterno = str(item["orden"])
            except:
                ordenInterno = ""
            cantidad = str(item["cantidad"])
            datos = self.buscarDatosProducto(ptc)
            if datos["error"] == -1:
                texto = "Error en PTC "+ptc+"."
                texto+= "\nEnvie un mail al responsable."
                texto+= "\nFaltaran productos por recepcionar"
                utiles.mensaje(None,texto)
                self.grid1.AppendRows()
                continue
            if datos["error"] == -2:
                self.reportarError(ptc)
            descripcion = datos["descri"][:20]
            talle = datos["talle"]
            color = str(datos["idcolor"])+"/"+datos["nombre"]
            precio = str(datos["precio"])
            proveedor = datos["proveedor"][:15]
            #existe,stock = self.buscarStock(ptc,sucursal)
            #stock = str(stock)
            try:
                auditoria,orden = item["auditoria"].split(":")
            except:
                orden = ""
            id = id+" "+str(orden)
            
            #Sucursal,ID,fecha,PTC,CodSussan,Cant,Recibidos,Descr,Talle,Color,Precio,Proveedor,orden
            #0        1  2     3   4         5    6         7     8     9     10     11        12
            self.grid1.SetCellValue(fil,0,sucorigen)
            self.grid1.SetCellValue(fil,1,id)
            self.grid1.SetCellValue(fil,2,fecha)
            self.grid1.SetCellValue(fil,3,ptc)
            self.grid1.SetCellValue(fil,4,codsussan)
            self.grid1.SetCellValue(fil,5,cantidad)
            self.grid1.SetCellValue(fil,6,"0")
            self.grid1.SetCellValue(fil,7,descripcion)
            self.grid1.SetCellValue(fil,8,talle)
            self.grid1.SetCellValue(fil,9,color)
            self.grid1.SetCellValue(fil,10,precio)
            self.grid1.SetCellValue(fil,11,proveedor)
            #self.grid1.SetCellValue(fil,12,stock)
            self.grid1.SetCellValue(fil,12,str(ordenInterno))
            
            self.grid1.SetCellBackgroundColour(fil,3,GRIS)
            self.grid1.SetCellBackgroundColour(fil,5,GRIS)
            self.grid1.SetCellBackgroundColour(fil,6,GRIS)
            self.grid1.SetCellAlignment(fil, 0, wx.ALIGN_CENTER, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil, 2, wx.ALIGN_CENTER, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil, 5, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil, 6, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil, 10, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil, 12, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            #self.grid1.SetCellAlignment(fil, 13, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)

            self.grid1.AppendRows()
        self.ajustarAnchoColumnas()
        self.totalizador()
        self.inptc.SetFocus()

    def OnMostrarTodosPendientes(self, event):
        if self.checkBox1.GetValue():
            #muestra todos los pendientes
            self.comboBox1.Enable(False)
            self.comboBox2.Enable(False)
            self.comboBox3.Enable(False)
            self.idorigen.Enable(False)
            self.button1.Enable(False)
            self.button2.Enable(False)
            self.button5.Show(True)
            self.textCtrl4.Enable(False)
            self.inptc.Enable(False)
            self.grid1.AppendCols()
            self.grid1.AppendCols()
            #Sucursal,ID,fecha,PTC,CodSussan,Cant,Recibidos,Descr,Talle,Color,Precio,Proveedor,orden
            #0        1  2     3   4         5    6         7     8     9     10     11        12
            #fecha,PTC,codsussan,cant,recibido,descripcion,talle,color,precio,proveedor,id,orden
            #0     1   2         3    4        5           6     7     8      9         10 11
            columnas = ['Suc\nOrigen','ID\n(reng)','Fecha','P.T.C',\
                        'Codigo\nSussan','Cant','Recib','Descripcion','T.',\
                        'Color','Precio','Proveedor','Orden']
            for i, col in enumerate(columnas): 
                self.grid1.SetColLabelValue(i, col)
            self.limpiar()
            self.ajustarAnchoColumnas()
            self.mostrarTodos()
            self.inptc.SetFocus()
        else:
            #limpia todo y permite una seleccion mas fina
            self.comboBox1.Enable(True)
            self.comboBox2.Enable(True)
            self.comboBox3.Enable(True)
            self.textCtrl4.Enable(True)
            self.inptc.Enable(True)
            self.idorigen.Enable(True)
            self.button1.Enable(True)
            self.button2.Enable(True)
            self.button5.Show(False)
            self.comboBox1.SetFocus()
            self.grid1.DeleteCols()
            self.grid1.DeleteCols()
            #fecha,PTC,codsussan,cant,recibido,descripcion,talle,color,precio,proveedor,id,orden
            #0     1   2         3    4        5           6     7     8      9         10 11
            columnas = ['Fecha','P.T.C','Codigo\nSussan','Cant','Recep','Descripcion',\
                        'T.','Color','Precio','Proveedor','id\n(reng)','Orden']
            for i, col in enumerate(columnas): 
                self.grid1.SetColLabelValue(i, col)
            self.limpiar()
            self.ajustarAnchoColumnas()
            self.inptc.SetFocus()

    def reportarError(self,ptc):
        pass

    def OnBuscar(self, event):
        if self.comboBox1.GetLabel()=="" and \
           self.comboBox2.GetLabel()=="" and \
           self.comboBox3.GetLabel()=="":
            texto = 'Debe especificar algun dato para buscar\n'
            texto+= '(Nro.Transf, Origen o "enviado por")'
            utiles.mensaje(None,texto)
            self.comboBox1.SetFocus()
            return
        self.limpiar()
        self.comboBox1.Enable(False)
        self.comboBox2.Enable(False)
        self.comboBox3.Enable(False)
        self.button1.Enable(False)
        self.idorigen.Enable(False)
        self.checkBox1.Enable(False)
        self.staticText13.Enable(False)
        sucursal = utiles.getSucursalActiva()

        opcion1 = ""
        if self.comboBox1.GetSelection()!=-1:
            idtransferencia = self.comboBox1.GetLabel()
            opcion1 = " AND idtransferencia='"+idtransferencia+"' "
            misucursal = self.comboBox1.GetLabel()[:1]
            try:
                sql = "SELECT codsucursal,nombre FROM sucursales WHERE 1"
                resultados = consultasBD.ordenCruda(sql)
                diccionario = {}
                for item in resultados:
                    diccionario[item[0]]=item[1]
                self.idorigen.SetLabel(misucursal)
                nombre = diccionario[misucursal]
                seleccion = 0
                for item in self.comboBox2.GetItems():
                    if item==nombre: break
                    seleccion+= 1
                self.comboBox2.SetSelection(seleccion)
            except:
                print "Error al identificar sucursal"
        opcion2 = ""
        if self.comboBox2.GetSelection()!=-1:
            sucorigen = self.idorigen.GetLabel()
            opcion2 = " AND idsucorigen='"+sucorigen+"' "
        opcion3 = ""
##        if self.comboBox3.GetSelection()!=-1:
##            auditoria = self.comboBox3.GetLabel()
##            opcion2 = " AND auditoria='"+auditoria+"' "
        
        r1 = "SELECT * FROM transferencia WHERE idsucdestino='"+sucursal+"' "
        r2 = "AND estado='0' "+opcion1+opcion2+opcion3
        r3 = "ORDER BY fecha,idsucorigen,idtransferencia "
        sql = r1+r2+r3
        resultados = consultasBD.ordenCrudaDict(sql)

        #fecha,PTC,codsussan,cant,recibido,descripcion,talle,color,precio,proveedor,id,orden
        #0     1   2         3    4        5           6     7     8      9         10 11
        for fila,item in enumerate(resultados):
            fecha = str(item["fecha"])[:10]
            fecha = utiles.invertirFecha2(fecha)
            ptc = item["ptc"]
            codsussan = item["codsussan"]
            id = item["idtransferencia"]+" "+str(item["id"])
            cantidad = str(item["cantidad"])
            self.seguridad = str(item["seguridad"])
            ordenInterno = str(item["orden"])
            datos = self.buscarDatosProducto(ptc)
            if datos["error"] == -1:
                texto = "Error en PTC "+ptc+"."
                texto+= "\nEnvie un mail al responsable."
                texto+= "\nFaltaran productos por recepcionar"
                utiles.mensaje(None,texto)
                self.grid1.AppendRows()
                continue
            if datos["error"] == -2:
                self.reportarError(ptc)
            descripcion = datos["descri"][:20]
            talle = datos["talle"]
            color = str(datos["idcolor"])+"/"+datos["nombre"]

            precio = str(datos["precio"])
            proveedor = datos["proveedor"][:15]
            try:
                auditoria,orden = item["auditoria"].split(":")
            except:
                orden = ""
            id = id+" "+str(orden)

        #fecha,PTC,codsussan,cant,recibido,descripcion,talle,color,precio,proveedor,id,orden
        #0     1   2         3    4        5           6     7     8      9         10 11
            self.grid1.SetCellValue(fila,0,fecha)
            self.grid1.SetCellValue(fila,1,ptc)
            self.grid1.SetCellValue(fila,2,codsussan)
            self.grid1.SetCellValue(fila,3,cantidad)
            self.grid1.SetCellValue(fila,4,"0")
            self.grid1.SetCellValue(fila,5,descripcion)
            self.grid1.SetCellValue(fila,6,talle)
            self.grid1.SetCellValue(fila,7,color)
            self.grid1.SetCellValue(fila,8,precio)
            self.grid1.SetCellValue(fila,9,proveedor)
            self.grid1.SetCellValue(fila,10,id)
            self.grid1.SetCellValue(fila,11,ordenInterno)

            self.grid1.SetCellBackgroundColour(fila,1,GRIS)
            self.grid1.SetCellBackgroundColour(fila,3,GRIS)
            self.grid1.SetCellBackgroundColour(fila,4,GRIS)
            self.grid1.SetCellAlignment(fila, 2, wx.ALIGN_CENTER, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fila, 3, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fila, 4, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fila, 8, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fila, 11, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)

            self.grid1.AppendRows()

        self.ajustarAnchoColumnas()
        self.totalizador()
        self.inptc.SetFocus()

    def pintarRenglon(self,fila,color):
        for col in xrange(self.grid1.GetNumberCols()):
            self.grid1.SetCellBackgroundColour(fila,col,color)

    def OnDobleClickIzquierdo(self, event):
        return
        #suma cantidad
        fila = self.grid1.GetGridCursorRow()
        if self.grid1.GetCellValue(fila,0)=="":
            return
        self.pintarRenglon(fila,VERDE)
        if self.checkBox1.GetValue():
            #Sucursal,ID,fecha,PTC,CodSussan,Cant,Recibidos,Descr,Talle,Color,Precio,Proveedor,orden
            #0        1  2     3   4         5    6         7     8     9     10     11        12
            columna = 6
        else:
            #fecha,PTC,codsussan,cant,recibido,descripcion,talle,color,precio,proveedor,id,orden
            #0     1   2         3    4        5           6     7     8      9         10 11
            columna = 4
        self.grid1.SetCellValue(fila,columna,"1")
        cantidad = self.grid1.GetCellValue(fila,columna-1)
        recibido = self.grid1.GetCellValue(fila,columna)

        self.totalizador()
            
    def OnDobleClickDerecho(self, event):
        #resta cantidad
        fila = self.grid1.GetGridCursorRow()
        if self.grid1.GetCellValue(fila,0)=="":
            return
        self.pintarRenglon(fila,BLANCO)
        if self.checkBox1.GetValue():
            #Sucursal,ID,fecha,PTC,CodSussan,Cant,Recibidos,Descr,Talle,Color,Precio,Proveedor,orden
            #0        1  2     3   4         5    6         7     8     9     10     11        12
            columna = 6
        else:
            #fecha,PTC,codsussan,cant,recibido,descripcion,talle,color,precio,proveedor,id,orden
            #0     1   2         3    4        5           6     7     8      9         10 11
            columna = 4
        self.grid1.SetCellValue(fila,columna,"0")
        self.grid1.SetCellBackgroundColour(fila,columna-3,GRIS)
        self.grid1.SetCellBackgroundColour(fila,columna-1,GRIS)
        self.grid1.SetCellBackgroundColour(fila,columna,GRIS)

        self.totalizador()

    def OnKillFocus(self, event):
        if self.inptc.GetLabel()!="":
            #si no se implementa la comparacion con codigo seguridad,
            #comentar las lineas siguientes
            if self.seguridad!=self.textCtrl4.GetLabel():
                utiles.mensaje(None,"Debe ingresar el CODIGO Transferencia")
                return
            self.OnAceptar()
            self.inptc.SetLabel("")
            self.inptc.SetFocus()
            return

    def OnAceptar(self):
        if self.inptc.GetLabel()=="":
            return
        ptc = self.inptc.GetLabel()
        fila = self.buscarPTCenGrilla(ptc)
        if fila<0:
            utiles.mensaje(None,"No hay PTC disponible")
            return
        if self.grid1.GetCellValue(fila,0)=="":
            return
        self.pintarRenglon(fila,VERDE)
        if self.checkBox1.GetValue():
            #Sucursal,ID,fecha,PTC,CodSussan,Cant,Recibidos,Descr,Talle,Color,Precio,Proveedor,orden
            #0        1  2     3   4         5    6         7     8     9     10     11        12
            columna = 6
        else:
            #fecha,PTC,codsussan,cant,recibido,descripcion,talle,color,precio,proveedor,id,orden
            #0     1   2         3    4        5           6     7     8      9         10 11
            columna = 4
        self.grid1.SetCellValue(fila,columna,"1")
        cantidad = self.grid1.GetCellValue(fila,columna-1)
        recibido = self.grid1.GetCellValue(fila,columna)

        self.totalizador()
        self.inptc.SetLabel("")
        self.inptc.SetFocus()

    def actualizaStock(self,ptc,sucursal,nuevostock):
        existe,stock = self.buscarStock(ptc,sucursal)
        if existe:
            try:
                stock = int(stock)+nuevostock
            except:
                stock = nuevostock
        else:
            stock = nuevostock
        if existe:
            r1 = "UPDATE stock SET stock='"+str(stock)+"' "
            r2 = "WHERE ptc='"+ptc+"' AND sucursal='"+sucursal+"' "
            sql = r1+r2
        else:
            r1 = "INSERT INTO stock(ptc,sucursal,stock) "
            r2 = "VALUES ('%s','%s','%s') " % (ptc,sucursal,str(stock))
            sql = r1+r2
        sincronizar_tabla.addChange(sql=sql)
        consultasBD.executaSinCommit(None, sql)

    def actualizaEstado(self,id,registro,ptc,orden):
        fecha = utiles.obtenerFecha("Y-m-d h:m:s")
        r1 = "UPDATE transferencia SET estado='1',fecharecepcion='"+fecha+"' "
        r2 = "WHERE idtransferencia='"+id+"' AND ptc='"+ptc+"' AND orden='"+orden+"' "
        sql = r1+r2
        sincronizar_tabla.addChange(sql=sql)
        consultasBD.executaSinCommit(None, sql)

    def OnRecepcionar(self, event):
        print "Recepcionando"
        try:
            if int(self.textCtrl3.GetLabel())==0:
                utiles.mensaje(None,"No hay nada que recepcionar")
                return
        except:
            utiles.mensaje(None,"No hay nada que recepcionar")
            return
        sucursal = utiles.getSucursalActiva()
        if self.checkBox1.GetValue():
            columna = 6
            col = 1
            colOrden = 12
        else:
            columna = 4
            col = 10
            colOrden = 11

        miStock = {}
        for fil in xrange(self.grid1.GetNumberRows()):
            #Sucursal,ID,fecha,PTC,CodSussan,Cant,Recibidos,Descr,Talle,Color,Precio,Proveedor,orden
            #0        1  2     3   4         5    6         7     8     9     10     11        12
            #fecha,PTC,codsussan,cant,recibido,descripcion,talle,color,precio,proveedor,id,orden
            #0     1   2         3    4        5           6     7     8      9         10 11
            if self.grid1.GetCellValue(fil,0)=="":continue
            cantidad = self.grid1.GetCellValue(fil,columna)
            if cantidad=="0": continue
            try:
                cantidad = int(cantidad)
            except:
                cantidad = 0
            if cantidad==0: continue
            id = self.grid1.GetCellValue(fil,col)
            nrotransferencia,id,orden = id.split()
            ptc = self.grid1.GetCellValue(fil,columna-3)
            orden = self.grid1.GetCellValue(fil,colOrden)
            try:
                aux = miStock[ptc][0]+1
                lista = miStock[ptc][1]
                lista.append((nrotransferencia,id,orden))
                miStock[ptc] = [aux,lista]
            except:
                miStock[ptc] = [1,[(nrotransferencia,id,orden)]]
        try:
            consultasBD.begin()
            for item in miStock:
                ptc = item
                stock = miStock[ptc][0]
                nro_id = miStock[ptc][1]
                self.actualizaStock(ptc,sucursal,stock)
                for identificador in nro_id:
                    miID = identificador[0]
                    miRegistro = identificador[1]
                    miOrden = identificador[2]
                    self.actualizaEstado(miID,miRegistro,ptc,miOrden)
            consultasBD.commit()
        except:
            consultasBD.rollback()
            texto = "La transferencia no ha podido recepcionarse.\n"
            texto+= "Debera volver a intentarlo mas tarde."
            utiles.mensaje(None,texto)
            self.Close()
            return
        
        try:
            sincronizar_tabla.syncServerTables(self, ["transferencia", "stock"])
            utiles.mensaje(None,"La transferencia ha sido\nrecepcionada y sincronizada")
        except:
            utiles.mensaje(None,"No se pudo sincronizar la transferencia.\nPruebe mas tarde")
            self.Close()
            return

        self.OnLimpiar(None)
        self.comboBox1.SetFocus()

    def imprimirTransferenciasPendientes(self,mifecha):
        sucursal = utiles.getSucursalActiva()
        r1 = "SELECT p3.id, p3.fecha, p6.nombre, p3.ptc, p4.codsussan, p5.descri, p3.cant \n"
        r2 = "FROM (SELECT p1.id, p1.fecha, p1.idsucorigen ,p2.ptc, p2.cant \n"
        r3 = "      FROM (SELECT id,fecha,idsucorigen FROM transferencias \n"
        r4 = "            WHERE estado='1' AND idsucdestino='"+str(sucursal)+"' \n"
        r5 = "            AND fecha>'2012-01-01 00:00:00') AS p1, \n"
        r6 = "            transferenciastieneproductos AS p2 \n"
        r7 = "      WHERE p1.id=p2.idtransferencia) AS p3, \n"
        r8 = "      producto_talle_color AS p4, \n"
        r9 = "      productos AS p5, sucursales AS p6  \n"
        r0 = "WHERE p3.ptc=p4.id AND p4.codsussan=p5.codsussan AND p3.idsucorigen=p6.codsucursal \n"
        rA = "ORDER BY p3.id,p3.ptc "
        sql = r1+r2+r3+r4+r5+r6+r7+r8+r9+r0
        resultados = consultasBD.ordenCrudaDict(sql)
        if resultados==None or resultados==() or len(resultados)==0:
            print "No se genera listado de Transferencias Pendientes"
            return False
        
        print "Imprimir Reportes de Transferencias Pendientes"
        f=open("c:\\matrisamor.doc\\reporte-transferenciasPendientes.html","w")
        numeroPagina = 1
        nrosuc,nombresuc = utiles.datosSucursal()
        
        #id,fecha,nombre,ptc,codsussan,descri,cant
        #0  1     2      3   4         5      6
        totalItemPorPagina = 55
        totalPaginas = int(self.grid1.GetNumberRows()-1) / totalItemPorPagina 
        totalPaginas+= 1

        def encabezadoPagina(texto):
            fecha = utiles.obtenerFecha("d-m-Y")
            sucursal = utiles.datosSucursal2()
            numero = str(sucursal[0])
            nombre = str(sucursal[1])
            telefono = str(sucursal[2])
            a = '<table width="100%" cellspacing="0" border="1"> \n'
            a+= '<tr><td> \n'
            a+= '<table width="100%" cellspacing="0" border="0"> \n'
            a+= '<tr> \n'
            a+= '<td valign="top" align="left" width="50%"> \n'
            a+= '<strong>SUSSAN S.R.L.<br>Transferencias Pendientes ('+mifecha+')<br>\n'
            a+= '<font size="1">'+numero+' '+nombre+' '+telefono+'</font></strong> \n'
            a+= '</td> \n'
            a+= '<td valign="top" align="right" width="50%">'+fecha+' \n'
            a+= '<br>P&aacute;gina '+str(numeroPagina)+' / '+str(totalPaginas)+'</td> \n'
            a+= '</tr> \n'
            a+= '</table> \n'
            a+= '</td></tr> \n'
            a+= '</table><br>\n'
            texto+= a
            return texto
        
        def encabezadoTabla(texto):
            #id,fecha,nombre,ptc,codsussan,descri,cant
            #0  1     2      3   4         5      6
            a = '<hr>'
            tama = '"0.05"'
            a+= '<table width="100%" cellspacing="1" border="0"> \n'
            a+= '<tr>\n'
            a+= '<td valign="top" align="right"><font size='+tama+'>Orden</font></td> \n'
            a+= '<td valign="top" align="right"><font size='+tama+'>N&uacute;mero<br>Transferencia</font></td> \n'
            a+= '<td valign="top" align="center"><font size='+tama+'>Fecha</font></td> \n'
            a+= '<td valign="top" align="left"><font size='+tama+'>Sucursal Origen</font></td> \n'
            a+= '<td valign="top" align="left"><font size='+tama+'>P.T.C.</font></td> \n'
            a+= '<td valign="top" align="left"><font size='+tama+'>CodSussan</font></td> \n'
            a+= '<td valign="top" align="left"><font size='+tama+'>Descripci&oacute;n</font></td> \n'
            a+= '<td valign="top" align="right"><font size='+tama+'>Cantidad</font></td> \n'
            a+= '</tr> \n'
            a+= '<tr>\n'
            a+= '<td colspan="8"><hr></td>\n'
            a+= '</tr>\n'
            texto+= a
            return texto
        
        cadena = '<?xml version="1.0" encoding="utf-8" ?> \n'
        cadena+= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> \n'
        cadena+= '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> \n'
        cadena+= '<head> \n'
        cadena+= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> \n'
        cadena+= '<meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" /> \n'
        cadena+= '<title>Sussan Boutique</title> \n'
        cadena+= '</head> \n'
        cadena+= '<body> \n'

        cadena = encabezadoPagina(cadena)
        cadena = encabezadoTabla(cadena)
        f.write(cadena)

        i = 0
        renglon = 0
        anterior = ""
        for item in resultados:
            #id,fecha,nombre,ptc,codsussan,descri,cant
            #0  1     2      3   4         5      6
            i = i + 1
            orden = str(i)
            id = item["id"]
            if anterior == id:
                imprimir = ""
                fecha = ""
                sucursal = ""
            else:
                cadena = '<tr> \n'
                cadena+= '<td colspan="8"><hr></font></td> \n'
                cadena+= '</tr>\n'
                f.write(cadena)
                imprimir = id
                fecha = str(item["fecha"])[:10]
                sucursal = item["nombre"]
            anterior = id
            ptc = item["ptc"]
            codsussan = item["codsussan"]
            descripcion = item["descri"]
            cantidad = str(item["cant"])
            
            tama = '"0.2"'
            cadena = '<tr> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+orden+'</font></td> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+imprimir+'</font></td> \n'
            cadena+= '<td valign="top" align="center"><font size='+tama+'>'+fecha+'</font></td> \n'
            cadena+= '<td valign="top" align="left"><font size='+tama+'>'+sucursal+'</font></td> \n'
            cadena+= '<td valign="top" align="left"><font size='+tama+'>'+ptc+'</font></td> \n'
            cadena+= '<td valign="top" align="left"><font size='+tama+'>'+codsussan+'</font></td> \n'
            cadena+= '<td valign="top" align="left"><font size='+tama+'>'+descripcion+'</font></td> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+cantidad+'</font></td> \n'
            cadena+= '</tr>\n'
            f.write(cadena)
            
            renglon+= 1
            
            if renglon == totalItemPorPagina :
                f.write("</table><!-- salto de pagina -->\n")
                f.write("<p STYLE='page-break-after: always;'></p>\n")
                renglon = 0
                numeroPagina+= 1
                cadena = encabezadoPagina("")
                cadena = encabezadoTabla(cadena)
                f.write(cadena)

        cadena = '</table>\n'
        f.write(cadena)
        f.write("</table><!-- salto de pagina -->\n")
        f.write("<p STYLE='page-break-after: always;'></p>\n")
        f.close()
        
        return True

    def imprimirTransferenciasPendientes2(self,mifecha):
        sucursal = utiles.getSucursalActiva()
        r1="SELECT p1.id, p1.fecha, p3.nombre, p1.ptc, p1.codsussan, \n"
        r2="       p2.descri, p1.cant, p1.auditoria \n"
        r3="FROM (SELECT idtransferencia AS id, fecha, idsucorigen, ptc, \n"
        r4="             codsussan, cantidad AS cant, auditoria \n"
        r5="      FROM transferencia \n"
        r6="      WHERE estado='0' AND idsucdestino='"+str(sucursal)+"') AS p1, \n"
        r7="     productos AS p2, sucursales AS p3 \n"
        r8="WHERE p1.codsussan = p2.codsussan \n"
        r9="      AND p3.codsucursal=p1.idsucorigen ORDER BY p1.id, p1.ptc "
        sql = r1+r2+r3+r4+r5+r6+r7+r8+r9
        resultados = consultasBD.ordenCrudaDict(sql)
        if resultados==None or resultados==() or len(resultados)==0:
            print "No se genera listado de Transferencias Pendientes (2)"
            return False
        
        print "Imprimir Reportes de Transferencias Pendientes (2)"
        f=open("c:\\matrisamor.doc\\reporte-transferenciasPendientes.html","a")
        numeroPagina = 1
        nrosuc,nombresuc = utiles.datosSucursal()
        
        #id,fecha,nombre,ptc,codsussan,descri,cant
        #0  1     2      3   4         5      6
        totalItemPorPagina = 55
        totalPaginas = int(self.grid1.GetNumberRows()-1) / totalItemPorPagina 
        totalPaginas+= 1

        def encabezadoPagina(texto):
            fecha = utiles.obtenerFecha("d-m-Y")
            sucursal = utiles.datosSucursal2()
            numero = str(sucursal[0])
            nombre = str(sucursal[1])
            telefono = str(sucursal[2])
            a = '<table width="100%" cellspacing="0" border="1"> \n'
            a+= '<tr><td> \n'
            a+= '<table width="100%" cellspacing="0" border="0"> \n'
            a+= '<tr> \n'
            a+= '<td valign="top" align="left" width="50%"> \n'
            a+= '<strong>SUSSAN S.R.L.<br>Transferencias Pendientes ('+mifecha+') - nuevo sistema<br>\n'
            a+= '<font size="1">'+numero+' '+nombre+' '+telefono+'</font></strong> \n'
            a+= '</td> \n'
            a+= '<td valign="top" align="right" width="50%">'+fecha+' \n'
            a+= '<br>P&aacute;gina '+str(numeroPagina)+' / '+str(totalPaginas)+'</td> \n'
            a+= '</tr> \n'
            a+= '</table> \n'
            a+= '</td></tr> \n'
            a+= '</table><br>\n'
            texto+= a
            return texto
        
        def encabezadoTabla(texto):
            #orden,nroTransf,fecha,sucOrigen,quien..;tpc,codsussan,descri,cant
            #0     1         2     3         4       5   6         7      8
            a = '<hr>'
            tama = '"0.05"'
            a+= '<table width="100%" cellspacing="1" border="0"> \n'
            a+= '<tr>\n'
            a+= '<td valign="top" align="right"><font size='+tama+'>Orden</font></td> \n'
            a+= '<td valign="top" align="right"><font size='+tama+'>N&uacute;mero<br>Transferencia</font></td> \n'
            a+= '<td valign="top" align="center"><font size='+tama+'>Fecha</font></td> \n'
            a+= '<td valign="top" align="left"><font size='+tama+'>Sucursal Origen</font></td> \n'
            a+= '<td valign="top" align="left"><font size='+tama+'>Qui&eacute;n lo<br>env&iacute;o?</font></td> \n'
            a+= '<td valign="top" align="left"><font size='+tama+'>P.T.C.</font></td> \n'
            a+= '<td valign="top" align="left"><font size='+tama+'>CodSussan</font></td> \n'
            a+= '<td valign="top" align="left"><font size='+tama+'>Descripci&oacute;n</font></td> \n'
            a+= '<td valign="top" align="right"><font size='+tama+'>Cantidad</font></td> \n'
            a+= '</tr> \n'
            a+= '<tr>\n'
            a+= '<td colspan="9"><hr></td>\n'
            a+= '</tr>\n'
            texto+= a
            return texto
        
        cadena = '<?xml version="1.0" encoding="utf-8" ?> \n'
        cadena+= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> \n'
        cadena+= '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> \n'
        cadena+= '<head> \n'
        cadena+= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> \n'
        cadena+= '<meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" /> \n'
        cadena+= '<title>Sussan Boutique</title> \n'
        cadena+= '</head> \n'
        cadena+= '<body> \n'

        cadena = encabezadoPagina(cadena)
        cadena = encabezadoTabla(cadena)
        f.write(cadena)

        i = 0
        renglon = 0
        anterior = ""
        for item in resultados:
            #orden,nroTransf,fecha,sucOrigen,quien..;tpc,codsussan,descri,cant
            #0     1         2     3         4       5   6         7      8
            i = i + 1
            orden = str(i)
            id = item["id"]
            if anterior == id:
                imprimir = ""
                fecha = ""
                sucursal = ""
                usuario = ""
            else:
                cadena = '<tr> \n'
                cadena+= '<td colspan="9"><hr></font></td> \n'
                cadena+= '</tr>\n'
                f.write(cadena)
                imprimir = id
                fecha = str(item["fecha"])[:10]
                fecha = utiles.invertirFecha2(fecha)
                sucursal = item["nombre"]
                try:
                    usuario = (item["auditoria"]).split(":")[0]
                except:
                    usuario = item["auditoria"]
            anterior = id
            ptc = item["ptc"]
            codsussan = item["codsussan"]
            descripcion = item["descri"]
            cantidad = str(item["cant"])
            
            #orden,nroTransf,fecha,sucOrigen,quien..;tpc,codsussan,descri,cant
            #0     1         2     3         4       5   6         7      8
            tama = '"0.2"'
            cadena = '<tr> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+orden+'</font></td> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+imprimir+'</font></td> \n'
            cadena+= '<td valign="top" align="center"><font size='+tama+'>'+fecha+'</font></td> \n'
            cadena+= '<td valign="top" align="left"><font size='+tama+'>'+sucursal+'</font></td> \n'
            cadena+= '<td valign="top" align="left"><font size='+tama+'>'+usuario+'</font></td> \n'
            cadena+= '<td valign="top" align="left"><font size='+tama+'>'+ptc+'</font></td> \n'
            cadena+= '<td valign="top" align="left"><font size='+tama+'>'+codsussan+'</font></td> \n'
            cadena+= '<td valign="top" align="left"><font size='+tama+'>'+descripcion+'</font></td> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+cantidad+'</font></td> \n'
            cadena+= '</tr>\n'
            f.write(cadena)
            
            renglon+= 1
            
            if renglon == totalItemPorPagina :
                f.write("</table><!-- salto de pagina -->\n")
                f.write("<p STYLE='page-break-after: always;'></p>\n")
                renglon = 0
                numeroPagina+= 1
                cadena = encabezadoPagina("")
                cadena = encabezadoTabla(cadena)
                f.write(cadena)

        cadena = '</table>\n'
        f.write(cadena)
        f.write("</table><!-- salto de pagina -->\n")
        f.write("<p STYLE='page-break-after: always;'></p>\n")
        f.close()
        
        return True

    def OnImprimir(self, event):
        miFecha = utiles.obtenerFecha("d-m-Y")
        self.imprimirTransferenciasPendientes(miFecha)
        self.imprimirTransferenciasPendientes2(miFecha)
        import os
        os.system("taskkill /IM firefox.exe /F")
        os.system("c:\\explorer.lnk c:\\matrisamor.doc\\reporte-transferenciasPendientes.html")

